#ifndef LUGAR_H_
#define LUGAR_H_

#include <string>
#include <vector>
#include "Utilizador.h"

class Lugar {
	friend std::ostream& operator<<(std::ostream& output, const Lugar& utilizador);
private:
	virtual void imprimir(std::ostream& ostr) const;
protected:
	std::string nome;
	std::vector<Lugar*> ligacoes;
	std::vector<Utilizador*> amigos;
	void imprimir_amigos(std::ostream& ostr) const;
	void imprimir_ligacoes(std::ostream& ostr) const;
public:
	Lugar();
	Lugar(const std::string nome);
	virtual ~Lugar();

	std::string getNome() const;
	int getNumeroAmigos() const;
	void adicionarAmigo(Utilizador* amigo);
	void removerAmigo(Utilizador* amigo);
	void adicionarLigacao(Lugar* lugar);
	void removerLigacao(Lugar* lugar);

	virtual const Lugar& operator =(const Lugar& lugar);
	bool operator ==(const Lugar& lugar) const;
	bool operator >(const Lugar& lugar) const;

};

#endif /* LUGAR_H_ */
